home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / MACtive Desktop / Source / PhaseShiftNub.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-20  |  6.3 KB  |  133 lines  |  [TEXT/CWIE]

  1. #ifndef _PHASESHIFTNUB_
  2. #define _PHASESHIFTNUB_
  3.  
  4. #include <ConditionalMacros.h>
  5. #include <QuickDraw.h>
  6. #include <Windows.h>
  7. #include "PhaseShiftConfig.h"
  8. #include "PatchHarness.h"
  9. #include "ProcInfo.h"
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #if PRAGMA_ALIGN_SUPPORTED
  16. #pragma options align=mac68k
  17. #endif
  18.  
  19.  
  20. typedef pascal void (*PhaseShiftUpdateProcPtr)(CGrafPtr port,RgnHandle rgn);
  21.  
  22. typedef pascal void (*PhaseShiftRegisterProcPtr)(PhaseShiftUpdateProcPtr updateProc);
  23. typedef pascal void (*PhaseShiftUnregisterProcPtr)(PhaseShiftUpdateProcPtr updateProc);
  24. typedef pascal void (*PhaseShiftBeginDrawProcPtr)(CGrafPtr *port,RgnHandle *rgn);
  25. typedef pascal void (*PhaseShiftEndDrawProcPtr)(void);
  26. typedef pascal void (*PhaseShiftDrawDesktopProcPtr)(RgnHandle rgn);
  27.  
  28.  
  29. #if GENERATINGCFM
  30. typedef UniversalProcPtr         PhaseShiftUpdateUPP;
  31. typedef UniversalProcPtr         PhaseShiftRegisterUPP;
  32. typedef UniversalProcPtr         PhaseShiftUnregisterUPP;
  33. typedef UniversalProcPtr         PhaseShiftBeginDrawUPP;
  34. typedef UniversalProcPtr         PhaseShiftEndDrawUPP;
  35. typedef UniversalProcPtr         PhaseShiftDrawDesktopUPP;
  36. #else
  37. typedef PhaseShiftUpdateProcPtr            PhaseShiftUpdateUPP;
  38. typedef PhaseShiftRegisterProcPtr        PhaseShiftRegisterUPP;
  39. typedef PhaseShiftUnregisterProcPtr        PhaseShiftUnregisterUPP;
  40. typedef PhaseShiftBeginDrawProcPtr        PhaseShiftBeginDrawUPP;
  41. typedef PhaseShiftEndDrawProcPtr        PhaseShiftEndDrawUPP;
  42. typedef PhaseShiftDrawDesktopProcPtr    PhaseShiftDrawDesktopUPP;
  43. #endif
  44.  
  45. enum {
  46.     uppPhaseShiftUpdateProcInfo = kPascalStackBased
  47.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(CGrafPtr)))
  48.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(RgnHandle))),
  49.     uppPhaseShiftRegisterProcInfo = kPascalStackBased
  50.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(PhaseShiftUpdateProcPtr))),
  51.     uppPhaseShiftUnregisterProcInfo = kPascalStackBased
  52.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(PhaseShiftUpdateProcPtr))),
  53.     uppPhaseShiftBeginDrawProcInfo = kPascalStackBased
  54.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(CGrafPtr*)))
  55.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(RgnHandle*))),
  56.     uppPhaseShiftEndDrawProcInfo = kPascalStackBased,
  57.     uppPhaseShiftDrawDesktopProcInfo = kPascalStackBased
  58.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(RgnHandle)))
  59. };
  60.  
  61. #if GENERATINGCFM
  62. #define NewPhaseShiftUpdateProc(userRoutine)        (PhaseShiftUpdateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftUpdateProcInfo,GetCurrentArchitecture())
  63. #define NewPhaseShiftRegisterProc(userRoutine)        (PhaseShiftRegisterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftRegisterProcInfo,GetCurrentArchitecture())
  64. #define NewPhaseShiftUnregisterProc(userRoutine)    (PhaseShiftUnregisterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftUnregisterProcInfo,GetCurrentArchitecture())
  65. #define NewPhaseShiftBeginDrawProc(userRoutine)        (PhaseShiftBeginDrawUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftBeginDrawProcInfo,GetCurrentArchitecture())
  66. #define NewPhaseShiftEndDrawProc(userRoutine)        (PhaseShiftEndDrawUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftEndDrawProcInfo,GetCurrentArchitecture())
  67. #define NewPhaseShiftDrawDesktopProc(userRoutine)    (PhaseShiftDrawDesktopUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppPhaseShiftDrawDesktopProcInfo,GetCurrentArchitecture())
  68. #else
  69. #define NewPhaseShiftUpdateProc(userRoutine)        ((PhaseShiftUpdateUPP)(userRoutine))
  70. #define NewPhaseShiftRegisterProc(userRoutine)        ((PhaseShiftRegisterUPP)(userRoutine))
  71. #define NewPhaseShiftUnregisterProc(userRoutine)    ((PhaseShiftUnregisterUPP)(userRoutine))
  72. #define NewPhaseShiftBeginDrawProc(userRoutine)        ((PhaseShiftBeginDrawUPP)(userRoutine))
  73. #define NewPhaseShiftEndDrawProc(userRoutine)        ((PhaseShiftEndDrawUPP)(userRoutine))
  74. #define NewPhaseShiftDrawDesktopProc(userRoutine)    ((PhaseShiftDrawDesktopUPP)(userRoutine))
  75. #endif
  76.  
  77. #if GENERATINGCFM
  78. #define CallPhaseShiftUpdateProc(userRoutine,port,rgn)        CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftUpdateProcInfo,(port),(rgn))
  79. #define CallPhaseShiftRegisterProc(userRoutine,proc)        CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftRegisterProcInfo,(proc))
  80. #define CallPhaseShiftUnregisterProc(userRoutine,proc)        CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftUnregisterProcInfo,(proc))
  81. #define CallPhaseShiftBeginDrawProc(userRoutine,port,rgn)    CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftBeginDrawProcInfo,(port),(rgn))
  82. #define CallPhaseShiftEndDrawProc(userRoutine)                CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftEndDrawProcInfo)
  83. #define CallPhaseShiftDrawDesktopProc(userRoutine,rgn)        CallUniversalProc((UniversalProcPtr)(userRoutine),uppPhaseShiftDrawDesktopProcInfo,(rgn))
  84. #else
  85. #define CallPhaseShiftUpdateProc(userRoutine,port,rgn)        (*(PhaseShiftUpdateProcPtr)(userRoutine))((port),(rgn))
  86. #define CallPhaseShiftRegisterProc(userRoutine,proc)        (*(PhaseShiftRegisterProcPtr)(userRoutine))((proc))
  87. #define CallPhaseShiftUnregisterProc(userRoutine,proc)        (*(PhaseShiftUnregisterProcPtr)(userRoutine))((proc))
  88. #define CallPhaseShiftBeginDrawProc(userRoutine,port,rgn)    (*(PhaseShiftBeginDrawProcPtr)(userRoutine))((port),(rgn))
  89. #define CallPhaseShiftEndDrawProc(userRoutine)                (*(PhaseShiftEndDrawProcPtr)(userRoutine))()
  90. #define CallPhaseShiftDrawDesktopProc(userRoutine,rgn)        (*(PhaseShiftDrawDesktopProcPtr)(userRoutine))((rgn))
  91. #endif
  92.  
  93.  
  94. #define kPhaseShiftSelector            'PSft'
  95. #define kPhaseShiftVersion            0x00000001
  96. #define    kPhaseShiftCompatible        0x00000001
  97. #define kPhaseShiftSignature        kPhaseShiftSelector
  98.  
  99.  
  100. typedef struct PhaseShiftInfo
  101. {
  102.     UInt32                            version;                // Version that is currently installed.
  103.     UInt32                            compatible;                // Backwards compatible to this version.
  104.     UInt32                            signature;                // Set if installed and active, otherwise NULL.
  105.     PatchDesc                        *patchList;                // Head pointer of linked list of patch descriptors.
  106.     
  107.     PhaseShiftNubUnloadUPP            unloadProc;                // Deactivate and unload from memory.
  108.     PhaseShiftNubGetFSSpecUPP        getFSSpecProc;            // Get FSSpec to PhaseShiftNub file.
  109.     
  110.     PhaseShiftRegisterUPP            registerProc;
  111.     PhaseShiftUnregisterUPP            unregisterProc;
  112.     PhaseShiftBeginDrawUPP            beginDrawProc;
  113.     PhaseShiftEndDrawUPP            endDrawProc;
  114.     PhaseShiftDrawDesktopUPP        drawDesktopProc;
  115.     
  116.     UInt8                            filler[128];
  117. } PhaseShiftInfo;
  118.  
  119.  
  120. #if PRAGMA_ALIGN_SUPPORTED
  121. #pragma options align=reset
  122. #endif
  123.  
  124. #ifdef __cplusplus
  125. }
  126. #endif
  127.  
  128.  
  129. void DebugStrf(char *format,...);
  130.  
  131.  
  132. #endif /* _PHASESHIFTNUB_ */
  133.